package com.afdor.rws.event.driven.api.channel.consumer.handler;

import com.afdor.rws.annotation.extension.SPI;
import com.afdor.rws.event.driven.api.EventHolder;

/**
 * 事件消费失败重试策略
 *
 * @author 悭梵
 * @date Created in 2018-08-21 10:17
 */
@SPI("default")
public interface EventRetryStrategy<EH extends EventHolder> {
    /**
     * 事件重试， 返回true表示可以重试，返回false表示不能进行重试操作
     *
     * @param eventHolder
     * @return 返回true表示可以重试，返回false表示不能进行重试操作
     */
    boolean allowRetry(EH eventHolder);

    /**
     * 事件重试
     *
     * @param eventHolder
     * @return 返回true表示可以充实，返回false表示不能进行重试操作
     */
    void retry(EH eventHolder);

}
